package com.gorkr.pan.core.exception;

import com.gorkr.pan.core.response.ResponseCode;
import lombok.Data;

/**
 * 自定义全局业务异常类
 */
@Data
public class RPanBusinessException extends RuntimeException{
    //公共异常为什么继承自 RuntimeException ?
//    维度	继承 RuntimeException	继承 Exception
//    异常类型	非受检异常（无需声明或捕获）	受检异常（必须处理）
//    事务回滚	默认触发回滚	需显式配置 rollbackFor
//    代码简洁性	高（无侵入性）	低（需 throws 或 try-catch）
//    适用场景	不可恢复的业务异常（如参数错误、权限不足）	可恢复的
    /**
     * 错误码
     */
    private Integer code;

    /**
     * 错误信息
     */
    private String message;

    public RPanBusinessException(ResponseCode responseCode) {
        this.code = responseCode.getCode();
        this.message = responseCode.getDesc();
    }

    public RPanBusinessException(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public RPanBusinessException(String message) {
        this.code = ResponseCode.ERROR_PARAM.getCode();
        this.message = message;
    }

    public RPanBusinessException() {
        this.code = ResponseCode.ERROR_PARAM.getCode();
        this.message = ResponseCode.ERROR_PARAM.getDesc();
    }
}


